package com.example.wordmemory;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.example.wordmemory.utils.WordDBHelper;

public class LoginActivity extends AppCompatActivity implements View.OnClickListener{
    private static final int REQUEST_CODE = 1;
    private String username;
    private EditText et_uid,et_upwd;
    private CheckBox cb_save;
    //定义一个全局变量：SharedPreferences：用于读取数据
    private SharedPreferences pref;
    //定义一个全局变量：SharedPreferences.Editor:用于改写数据
    private SharedPreferences.Editor editor;
    private WordDBHelper dbHelper;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        dbHelper = new WordDBHelper(this);

//        initView();

        et_uid = findViewById(R.id.et_uid);
        et_upwd = findViewById(R.id.et_upwd);
        cb_save = findViewById(R.id.cb_save);

        //设置监听
        findViewById(R.id.btn_register).setOnClickListener(this);
        findViewById(R.id.btn_contact).setOnClickListener(this);
        findViewById(R.id.btn_login).setOnClickListener(this);
        findViewById(R.id.cb_save).setOnClickListener(this);

        // 调用getSharedPreferences方法初始化pref
        pref = getSharedPreferences("login", Context.MODE_PRIVATE);
        // 调用edit方法初始化editor
        editor = pref.edit();

        loadInfo();
    }

    @Override
    public void onClick(View v) {
        int viewId = v.getId();
        if(viewId == R.id.btn_register){
            Intent i = new Intent(this, RegisterActivity.class); // 显式指定跳转到RegisterActivity
            startActivityForResult(i, REQUEST_CODE); // 调用startActivityForResult，从RegisterActivity返回时能携带相关数据；REQUEST_CODE：常量，LoginActivity类的全局变量，定义：private static final int REQUEST_CODE = 1
        } else if (viewId == R.id.btn_contact) {
            Intent i = new Intent();
            i.setAction(Intent.ACTION_SENDTO);
            i.setData(Uri.parse("mailto: xxx@abc.com"));
            startActivity(i);
        } else if (viewId == R.id.btn_login) {
            // 获取页面输入的用户名与密码
            String userid = et_uid.getText().toString().trim(); //et_uid：需要定义为局变量
            String password = et_upwd.getText().toString().trim(); //et_upwd：需要定义为全局变量

            if (dbHelper.validateUser(userid, password)) {
                // TODO 跳转到MainActivity页面
                // cb_save.isChecked：判断保存密码复选框是否被选中
                if (cb_save.isChecked()) {
                    // 利用editor的put方法写入数据
                    editor.putString("userid", userid);
                    editor.putString("password", password);
                    editor.putBoolean("isSave", true);
                } else {
                    // 保存密码复选框没有被选中，则不保存数据，并且删除保存的数据
                    editor.remove("userid").remove("password").remove("isSave");
                }
                // 提交
                editor.commit();

                //TODO 需要修改 username 传入主页面 现在输入的没有username的
                Intent intent = new Intent();
                intent.setClass(this, MainActivity.class);
                intent.putExtra("sid",userid);
                intent.putExtra("username", (username == null || username.isEmpty()) ? "陈荣沛" : username); //从RegisterActivity返回的username，若没有返回传入空字符串。
                startActivity(intent);
                finish(); //成功登录则释放当前activity
            } else {
                Toast.makeText(this, "登录失败：用户名或密码错误",
                        Toast.LENGTH_SHORT).show();
            }

        }
    }

    private void loadInfo() {
        // 通过pref的get方法获取数据
        String name = pref.getString("userid", "");
        String pwd = pref.getString("password", "");
        boolean isSave = pref.getBoolean("isSave", false);
        // 如果拿到的数据的保存密码是true，则在页面上显示，否则代码之前没有保存过密码。
        if (isSave) {
            et_uid.setText(name);
            et_upwd.setText(pwd);
            cb_save.setChecked(true);
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1&& resultCode == RESULT_OK){
            //将数据从data取出
            String id = data.getStringExtra("id");
            String pwd = data.getStringExtra("pwd");
            username = data.getStringExtra("name"); // username设置为全局变量
            et_uid.setText(id); //et_uid、et_upwd：全局变量，输入学号与密码文本框
            et_upwd.setText(pwd);
        }
    }
    @Override
    protected void onDestroy() {
        dbHelper.close();
        super.onDestroy();
    }
}
